/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.sadhar.sipp.perekamankelompokkegiatan;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.sadhar.cektabel.cekTabel;
import org.sadhar.cektabel.cekTabelDAO;
import org.sadhar.cektabel.cekTabelDAOImpl;
import org.sadhar.sia.common.ClassConnection;
import org.sadhar.sia.common.ClassUtility;
import org.springframework.jdbc.core.RowMapper;

/**
 *
 * @author hendro
 */
public class PerekamanKelompokKegiatanDAOImpl implements PerekamanKelompokKegiatanDAO {

    public PerekamanKelompokKegiatanDAOImpl() {
        ClassConnection.getTransactionProxyFactoryBean().setTarget(this);
    }

    public List<PerekamanKelompokKegiatan> list() {
        List<PerekamanKelompokKegiatan> list = new ArrayList<PerekamanKelompokKegiatan>();
        List<Map> rows = ClassConnection.getJdbc().queryForList("SELECT * FROM ppmk.kelompokKegiatan");
        for (Map m : rows) {
            PerekamanKelompokKegiatan kel = new PerekamanKelompokKegiatan();
            kel.setKodeKelompok(Integer.valueOf(m.get("kodeKelompok").toString()));
            kel.setKelompokKegiatan(m.get("kelompokKegiatan").toString());
            list.add(kel);
        }
        return list;
    }

    public void insert(PerekamanKelompokKegiatan kelompokKegiatan) throws Exception {
        String sql = "INSERT INTO ppmk.kelompokKegiatan(kelompokKegiatan) VALUES(?)";
        ClassConnection.getJdbc().update(sql, new Object[]{ClassUtility.quote(kelompokKegiatan.getKelompokKegiatan())});
    }

    public void update(PerekamanKelompokKegiatan kelompokKegiatan) throws Exception {
        String sql = "UPDATE ppmk.kelompokKegiatan SET kelompokKegiatan=? WHERE kodeKelompok=?";
        ClassConnection.getJdbc().update(sql, new Object[]{ClassUtility.quote(kelompokKegiatan.getKelompokKegiatan()),
                    Integer.valueOf(kelompokKegiatan.getKodeKelompok())});
    }

    public void delete(PerekamanKelompokKegiatan kelompokKegiatan) throws Exception {
        String sql = "DELETE FROM ppmk.kelompokKegiatan WHERE kodeKelompok=?";
        ClassConnection.getJdbc().update(sql, new Object[]{Integer.valueOf(kelompokKegiatan.getKodeKelompok())});
    }

    public List select(String kelompok) throws Exception {
        String sql = "SELECT * FROM ppmk.kelompokKegiatan WHERE kelompokKegiatan=?";
        return ClassConnection.getJdbc().queryForList(sql, new Object[]{kelompok});
    }

    public List select(int kodeKelompok, String kelompokKegiatan) throws Exception {
        String sql = "SELECT * FROM ppmk.kelompokKegiatan WHERE kodeKelompok<>? AND kelompokKegiatan=?";
        return ClassConnection.getJdbc().queryForList(sql, new Object[]{Integer.valueOf(kodeKelompok), kelompokKegiatan});
    }

    public PerekamanKelompokKegiatan select(int kodeKelompok) throws Exception {
        PerekamanKelompokKegiatan kelKegiatan = new PerekamanKelompokKegiatan();
        String sql = "SELECT * FROM ppmk.kelompokKegiatan WHERE kodeKelompok=?";
        kelKegiatan = (PerekamanKelompokKegiatan) ClassConnection.getJdbc().queryForObject(sql, new Object[]{kodeKelompok}, new RowMapper() {

            public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
                return new PerekamanKelompokKegiatan(
                        rs.getInt("kodeKelompok"),
                        rs.getString("kelompokKegiatan"));
            }
        });
        return kelKegiatan;
    }

    public List<PerekamanKelompokKegiatan> list(String key) throws Exception {
       List<PerekamanKelompokKegiatan> list = new ArrayList<PerekamanKelompokKegiatan>();
        List<Map> rows = ClassConnection.getJdbc().queryForList("SELECT * FROM ppmk.kelompokKegiatan WHERE kelompokKegiatan LIKE ?",
                new Object[]{"%"+key+"%"});
        for (Map m : rows) {
            PerekamanKelompokKegiatan kel = new PerekamanKelompokKegiatan();
            kel.setKodeKelompok(Integer.valueOf(m.get("kodeKelompok").toString()));
            kel.setKelompokKegiatan(m.get("kelompokKegiatan").toString());
            list.add(kel);
        }
        return list;
    }

    // revisied by : taufan (BAPSI)
    public boolean cekDataTabel(String table, String[] field, String[] value) {
        cekTabel obj = new cekTabel();
        cekTabelDAO dao = new cekTabelDAOImpl();
        List lsNamaField = new ArrayList();
        List lsValueField = new ArrayList();
        for (int i = 0; i < field.length; i++) {
            lsNamaField.add(field[i].toString());
            lsValueField.add(value[i].toString());
        }
        obj.setNamaTabel(table);
        obj.setNamaField(lsNamaField);
        obj.setValueField(lsValueField);
        if (dao.cekTabel(obj)) {
            return true;
        } else {
            return false;
        }
    }
    //

}
